package 集合.双列集合;
import Useless.Test.Student;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

import java.util.Set;
import java.util.function.BiConsumer;

public class hashMap {
    public static void main(String[] args) {
        //        HashMap是map里面的一个实现类，可以使用map里的方法.特点：无序，
        /*
        案例一
        要求：创建一个HashMap集合，键是学生对象(student) ，值是籍贯(String)
        存储三个键值对对象，并遍历
        要求：同姓名，同年龄认为是同一个学生

         */
//        创建hashmap的对象
        HashMap<Student,String> hm=new HashMap<>();
//        创建三个学生对象
        Student s1=new Student("zhangsan",18,"男");
        Student s2=new Student("lisi",20,"男");
        Student s3=new Student("wangwu",19,"男");
        Student s4=new Student("zhaoliu",21,"男");
        Student s5=new Student("zhaoliu",21,"男");
//        添加元素
        hm.put(s1,"henan");
        hm.put(s2,"shandong");
        hm.put(s3,"hebei");
        hm.put(s4,"shanxi");
//        当添加的键相同时，与其对应的键值则会是新添加键所对应的值(旧键对应的值被覆盖)
        hm.put(s5,"anhui");

//        遍历集合（三种遍历方式）
        Set<Student> keys=hm.keySet();//通过键找值，在进行遍历
        for (Student key:keys){
//            通过键找到值
            String s = hm.get(key);
            System.out.println(key+"="+s);
        }
        System.out.println("-----------------------hm.enteySet遍历方式--------------------------");
//          第二种遍历方式
        Set<Map.Entry<Student, String>> entries = hm.entrySet();
        for (Map.Entry<Student, String>entry:entries){
            Student key=entry.getKey();
            String value=entry.getValue();
            System.out.println(key+"="+value);
        }
//        第三种遍历方式
        System.out.println("---------------------lambda(foreach)------------------------------");
            hm.forEach(new BiConsumer<Student, String>() {
                @Override
                public void accept(Student student, String s) {
//                    student对应的为键，s对应的为值
                    System.out.println(student+"="+s);
                }
            });
//            第四种遍历方式
        Set<Student> students = hm.keySet();
        for (Student student : students) {
            String value = hm.get(student);
            System.out.println(student+"="+value);
        }
    }
}
